Uniapp 多端开发经验整理

您所在的位置:网站首页 uniapp word Uniapp 多端开发经验整理

Uniapp 多端开发经验整理

2023-02-24 13:15| 来源: 网络整理| 查看: 265

文档说明:

本文档目的在于帮助基于 Uniapp 进行移动开发的人员 快速上手、规避问题、提升效率。将以流程提纲的方式,整理开发过程各阶段可能出现的问题点以及思路。对官方文档中已有内容,会贴附链接,尽量不做过多阐述以免冗余。

使用时可根据需求和自身掌握情况,从目录跳转查看。

Uniapp 使用 Vue 语法+微信小程序 API,有二者基础可快速上手,开发 APP 还会用到 HTML5+规范 ,有非常丰富的原生能力。在此还是建议尽量安排时间通读官方文档,至少留下既有功能的印象,来增强对 Uniapp 开发的掌握,游刃有余的应对各类开发需求。

开发准备 小程序 后台配置

小程序个别类目需要行业资质,需要一定时间来申请,根据项目自身情况尽早进行 服务类目 的设置以免影响上线时间。

必须在后台进行 服务器域名配置,域名必须 为 https 。否则无法进行网络请求。注意 每月只有 5 次修改机会。

在开发工具中可配置不验证 https,这样可以临时使用非 https 接口进行开发。非 https 真机预览时需要从右上角打开调试功能。

如果有 webview 需求,必须在小程序管理后台配置域名白名单。

开发工具 下载 微信开发者工具 设置 → 安全 → 打开“服务端口”。打开后方可用 HbuilderX 运行并更新到微信开发者工具。 APP 证书文件

准备苹果开发账号

ios 证书、描述文件 申请方法

证书和描述文件分为开发(Development)和发布(Distribution)两种,Distribution 用来打正式包,Development 用来打自定义基座包。

ios 测试手机需要在苹果开发后台添加手机登录的 Apple 账号,且仅限邮箱方式注册的账号,否则无法添加。

Uniapp 创建 Uni-app 项目

根据 文档 操作即可,新建时建议先不选择模板,因为模板后期也可以作为插件导入。这里推荐一个 UI 框架 uView,兼容 Nvue 的 Uniapp 生态框架。

路由

配置: 路由的开发方式与 Vue 不同,不再是 router,而是参照小程序原生开发规则在 pages.json 中进行 配置,注意 path 前面不加"/"。

跳转: 路由的 跳转方式,同样参照了小程序 有 navigator 标签 和 API 两种。

navigator 标签: 推荐使用 有助于 SEO(搜索引擎优化)。 API: 常用跳转方式 uni.navigateTo()、uni.redirectTo() 、uni.switchTab(),即可处理大部分路由情况。

需注意:

tabBar 页面 仅能通过 uni.switchTab 、方法进行跳转。 如需求特殊可以自定义开发 tabBar,即 pages.json 中不要设置 tabBar,这样也就不需要使用 uni.switchTab 了。 url 前面需要加"/"

问题点: 小程序页面栈最多 10 层。也就是说使用 uni.navigateTo 最多只能跳转 9 层页面。

解决: 这里不推荐直接使用 uni.redirectTo 取代来处理,会影响用户体验,除非产品设计如此。建议在会出现同页面跳转的页面(例:产品详情 → 点击底部更多产品 → 产品详情 →...),封装一下页面跳转方法,使用 getCurrentPages() 方法获取当前页面栈的列表,根据列表长度去判断使用什么路由方法。路由方法的选择根据实际情况决定 官方文档。

//页面跳转 toPage(url){ let pages=getCurrentPages() if(pages.length 分享 export default{ data(){ return{ //列表数据 list:[ { id:1, title:"标题", img:'***.jpg' } ] } }, onShareAppMessage(){ // 点击页面中分享按钮,这样可以分别设置分享内容 if (res.from === 'button') { let item=res.target.dataset.item return { title: item.title, path: `/pages/detail?id=${item.id}`, imageUrl:item.img } } //点击右上角胶囊按钮分享的设置 return { title: '**社区', path: '/pages/community/' } } } 复制代码

return 的 Object 中 imageUrl 必须为宽高比例 5:4 的图片,并且图片大小尽量小于 20K。imageUrl 可不填,会自动截取当前页面画面。

另外 button 有默认样式,需要清除一下。

.btn-share { padding: 0; margin: 0; border: 0; &::after { padding: 0; margin: 0; border: 0; } /*以上代码完成了样式清除,接下来写新的css样式*/ } 复制代码 获取用户手机号

小程序通过点击 button 获取 code 来跟后端换取手机号。在开发者工具中无法获取到 code。真机预览中可以获取到。

获取用户手机号 export default { methods: { getphonenumber(e) { let code = e.detail.code; //开发工具中无法获取到该code,用真机预览进行测试 //开发阶段可以设置剪贴板将code复制。便于跟后端对接调试。调试完成后记得删除。 uni.setClipboardData({ data: e.detail.code }); } } }; 复制代码 苹果登录

APP 苹果登录需要使用自定义基座打包才能获得 Apple 的登录信息进行测试

iOS 自定义基座打包需要用开发(Development)版的证书和描述文件

H5 唤起 App

两种实现方式:

URL Sheme

优点:配置简单

缺点:会弹窗询问“是否打开***”,未安装时网页没有回调,而且会弹窗“打不开网页,因为网址无效”;微信微博 QQ 等应用中被禁用,用户体验一般。

Universal Link

优点:没有额外弹窗,体验更优。

缺点:配置门槛更高,需要一个不同于 H5 域名的 https 域名(跨域才出发 UL);iOS9 以上有效,iOS9 一下还是要用 URL Sheme 来解决;未安装 App 时会跳转到 404 需要单独处理。

打包发布 摇树优化

H5 打包时去除未引用的组件、API。

摇树优化(treeShaking)

//manifest.json "h5" : { "optimization":{ "treeShaking":{ "enable":true //启用摇树优化 } } } 复制代码 启动图标

让 UI 帮忙切一个符合以下标准的图片,在 APP 图标配置中自动生成即可。

格式为 png UI 切图时不要带圆角 分辨率不小于 1024×1024 启动图

如没有特殊要求,直接使用通用启动页面即可。

如需自定义启动图:

Android 可直接使用普通 png,也可配置.9.png,可减少包体积,避免缩放影响清晰度。为了更好的效果和体验建议使用.9 图。

如何制作.9.png?使用 Android studio、ps。或者找 UI 同事帮忙

iOS 需要制作storyboard,如所需效果与 uni 提供的 storyboard 模板类似,可直接使用模板修改代码即可(xml 格式)。否则需要使用 xcode 进行更深度的修改,以实现效果并适配各机型。

权限配置

HBuilderX 默认会勾选一些不需要的权限,为避免审核打回,需要注意以下权限配置

manifest.json 中的【App 权限配置】取消勾选“Android 自动添加第三方 SDK 需要的权限”,然后在下方配置处根据参考文档取消勾选没有用到的权限,额外注意核对推送、分享等功能的权限需求。 manifest.json 中的【App 模块配置】仅勾选所需模块(容易漏掉,也会影响权限)

补充 SEO(搜索引擎优化)

用户流量是衡量产品的重要指标之一,受到很多方面影响,SEO 就是其中之一。在没有额外推广的情况下,搜索引擎带来的流量基本就是产品流量的主要来源。传统 web 开发通过设置 TDK、sitemap 等,现阶段移动开发方法有所变化,但是万变不离其宗,核心还是一样的。

小程序:

被动方式: 确保 URL 可直接打开,通俗说就是 url 要有效,不能是 404。 页面跳转优先采用 navigator 组件 清晰简洁的页面参数 必要的时候才请求用户进行授权、登录、绑定手机号等 不收录 web-view,若非不需 seo 内容(用户协议之类)、或已有 H5 页面节省开发,否则尽量不要用 web-view。 配置sitemap 设置标题和分享缩略图 类似于传统 web 中设置 TDK。在百度小程序中有专门的接口来传递 SEO 信息。 主动方式: 使用页面路径推送能力让微信收录内容。

内容详情请查看 优化指南。所有被动方式可以作为开发习惯来养成。

H5: 因为 Uniapp 是基于 Vue 语法来开发,这种 SPA 对于 SEO 并不友好。业界有 SSR(服务端渲染) 方法,等了很久 Uniapp 官方也终于提供了 SSR 的方法,但是需要使用 uniCloud。所以如果没有使用 uniCloud,暂时没有更合适的方法来处理该问题。

APP: 方式脱离前端范畴,不做讨论。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3